/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.platform.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.medusa.gruul.common.core.util.PageUtils;
import com.medusa.gruul.platform.api.entity.AgentInfo;
import com.medusa.gruul.platform.api.entity.AgentPackageOrder;
import com.medusa.gruul.platform.api.entity.SysShopPackageOrder;
import com.medusa.gruul.platform.model.dto.OrderOptionDto;
import com.medusa.gruul.platform.model.vo.agent.AgentPackageOrdersVo;

import java.math.BigDecimal;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author whh
 * @since 2020-11-06
 */
public interface IAgentPackageOrderService extends IService<AgentPackageOrder> {

    /**
     * 新增代理购买订单记录
     *
     * @param order           套餐订单
     * @param status          订单状态
     * @param earnProfitMoney 可分账金额
     * @param agentInfo       代理信息
     */
    void insertPakcageOrder(SysShopPackageOrder order, Integer status, BigDecimal earnProfitMoney, AgentInfo agentInfo);

    /**
     * 修改代理汇款支付的套餐订单状态
     *
     * @param orderNum 订单编号
     * @param status   订单状态
     */
    void updateByOrderNumber(String orderNum, Integer status);

    /**
     * 查询代理交易记录
     *
     * @param page      页数
     * @param size      条数
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param search      模糊搜索订单号或者账号
     * @param payType   支付方式
     * @param status    支付状态
     * @return com.medusa.gruul.platform.model.vo.agent.AgentPackageOrdersVo
     */
    PageUtils<AgentPackageOrdersVo> packageOrders(Integer page, Integer size, String startTime, String endTime, String search, String payType, Integer status);


    /**
     * 查询代理套餐订单
     *
     * @param page         页数
     * @param size         数据条数
     * @param status       支付状态 0:待处理1:处理中2:已经完成 3:关闭
     * @param payStartTime 开始时间
     * @param payEndTime   结束时间
     * @param phone        手机号
     * @param orderNum     充值订单号
     * @param nikeName     商户昵称
     * @param payType      支付方式 0-所有 1:余额支付2:微信3:支付宝4:汇款支付     * @param templateId   模板id
     * @param templateId   模板id
     * @return com.medusa.gruul.platform.model.vo.agent.AgentOrdersVo
     */
    PageUtils<AgentPackageOrdersVo> agentOrders(Integer page, Integer size, Integer status, String payStartTime, String payEndTime, String phone, String orderNum, String nikeName, Integer payType, Long templateId);

    /**
     * 管理台代理的订购订单操作
     *
     * @param dto com.medusa.gruul.platform.model.dto.OrderOptionDto
     */
    void packageOrderOption(OrderOptionDto dto);
}
